package com.csun.cmny.provider.service;

import com.csun.cmny.base.dto.LoginAuthDto;
import com.csun.cmny.core.support.IService;
import com.csun.cmny.provider.device.csun.camera.entity.CsunCameraData;
import com.csun.cmny.provider.model.domain.DmcCsunCameraLocation;
import com.csun.cmny.provider.model.dto.camera.BindCsunCameraLocationDto;
import com.csun.cmny.provider.model.dto.camera.CsunCameraQueryDto;
import com.csun.cmny.provider.model.vo.CameraReqVo;
import com.csun.cmny.provider.model.dto.propertyManagement.SelectDeviceDataDto;
import com.csun.cmny.provider.model.vo.csuncamera.CsunCameraVo;
import com.csun.cmny.provider.model.vo.life.DmcDeviceByRoom;
import com.csun.cmny.provider.model.vo.propertyManagement.PropertyDataVo;

import java.util.List;

/**
 * @Auther: chisj chisj@foxmal.com
 * @Date: 2019-09-02 14:14
 * @Description: the interface dmc csun camera location service
 */
public interface DmcCsunCameraLocationService extends IService<DmcCsunCameraLocation> {

    /**
     * query dmc csun camera list with page
     *
     * @param csunCameraQueryDto    the csun camera query dto
     *
     * @return  the list.
     */
    List<CsunCameraVo> queryListWithPage(CsunCameraQueryDto csunCameraQueryDto);

    /**
     * delete dmc csun camera by id
     *
     * @param id    the csun camera id
     *
     * @return  the int.
     */
    Integer deleteById(Long id);

    /**
     * bind csun camera and location
     *
     * @param bindCsunCameraLocationDto the bind csun camera location dto
     * @param loginAuthDto  the login auth dto
     *
     * @return  the int.
     */
    Integer bind(BindCsunCameraLocationDto bindCsunCameraLocationDto, LoginAuthDto loginAuthDto);

    /**
     * untied csun camera and location
     *
     * @param deviceId  the device id
     *
     * @return  the int.
     */
    Integer untied(Long deviceId);

    /**
     * get csun camera by device no
     *
     * @param deviceNo  the device no
     *
     * @return  the csun camera vo
     */
    CsunCameraVo getCsunCameraByDeviceNo(String deviceNo);

    /**
     * get csun camera by device id
     *
     * @param deviceId  the device id
     *
     * @return  the csun camera vo
     */
    CsunCameraVo getCsunCameraByDeviceId(Long deviceId);

    /**
     * 根据房间id查询绑定的摄像头编号
     * @date 2020/1/6 10:01
     * @param roomId
     * @return com.csun.cmny.provider.service.DmcCsunCameraLocationService
     */
    List<String> getCameraDeviceNoByLifeRoomId(Long roomId);

    /**
     * 根据房间id查询绑定的摄像头id
     * @param roomId
     * @return
     */
    List<Long> selectDeviceIdByRoomId(Long roomId);

    /**
     *
     * @return
     */
    DmcDeviceByRoom selectRoomIdByDeviceId(Long alertId);

    /**
     * query csun camera bind list
     *
     * @return the csun camera data list
     */
    List<CsunCameraData> queryCsunCameraBindList();

    List<PropertyDataVo> selectDeviceData(SelectDeviceDataDto selectDeviceDataDto);

    /**
     * 根据房间Id查询摄像头数据
     *
     * @param roomIdList the room id list
     *
     * @return the camera req vo list
     */
    List<CameraReqVo> queryCameraByRoomIds(List<Integer> roomIdList);
}
